

#	args:
#	ARGV[1]: header file
#	ARGV[2]: file in cui inserire l'header
#	
#	opzioni -v:
#	-vreplace=true  Forza la sostituzione dello header precedente. is default
#	-vreplace=false Il nuovo header e' aggiunto in testa al file.
#
#	retval:
#     0 se il file sorgente non necessita di alcuna modifica
#       nessun output viene prodotto.
#     1 se il file sorgente deve essere modificato con quello
#       prodotto su stdout

BEGIN {
	
	
	if( ARGC!=3 ) {
		print( "Args: <header file> <file>" );
		exit(-1);
	}
	
	if( replace!="false" ) replace="true";

	
	gLine = ""
	gNEWHeaderFile = ARGV[1]
	gFile = ARGV[2]
		
	#//gNEWHeaderLines[n] //contiene il numero di righe
	#//gOLDHeaderLines[n] //contiene il numero di righe
	
	#//read default header
	dhl=0; //default header lines counter	
	while( (getline gLine < gNEWHeaderFile ) > 0 ){
		gNEWHeaderLines[dhl++] = gLine
	}
	close(gNEWHeaderFile);
	

	#//read header file
	hl=0; //header lines counter
	empty=1
	while( (getline gLine < gFile ) > 0 ){
		if(match(gLine,"^package[ \t]+it\.agapps"))	break;
		empty = empty && match(gLine,"^[ \t]*$");
		gOLDHeaderLines[hl++] = gLine
	}
	
	#//verify the headers
	equals = (dhl==hl)
	if( equals ){
		equals=1;
		for( i=0; i<dhl && equals; i++ ) {
			equals = (gNEWHeaderLines[i]==gOLDHeaderLines[i])
			if(!equals) break;	
		}
	}
		
	if( !equals ) {
		#write temporary file	
		for( i=0; i<dhl; i++ ) print gNEWHeaderLines[i]
		if(replace!="true") for( i=0; i<hl; i++ ) print gOLDHeaderLines[i]
		do{ print gLine } while( (getline gLine < gFile ) > 0 )
		close(gFile);
	}
}

END{ exit( equals ? 0 : 1 ) }
